import time
import random
import re

from rich.console import Console
from rich.table import Table

import argparse

from .scraper import Parser
from .proxy import ParserProxy


def get_input_parameters():

    """ Получаем входные аргументы """

    parser = argparse.ArgumentParser()

    parser.add_argument('-b', dest='display_browser', default='no', required=False)
    parser.add_argument('-k', dest='keyword', default='парсер', required=False)

    arguments = parser.parse_args()

    display_browser = arguments.display_browser
    keyword = arguments.keyword

    data = (display_browser, keyword)

    return data


def display_information_on_terminal_and_wait(data, count, launch_time):

    """ Отображаем информацию в терминале """

    well_what = 'Новых заказов нет' if data[0] == 'Новых заказов нет' else re.findall(r'\d+', data[0])

    if not well_what == 'Новых заказов нет':

        print(data)
        number_of_orders = int(re.findall(r'\d+', data[0])[0])
        well_what = 'Появился новый заказ' if number_of_orders == 1 else 'Появились новые заказы ({})'.format(number_of_orders)

    current_time = str(time.ctime(time.time()))
    waiting_time_seconds = random.uniform(250, 300)
    waiting_time_minutes = str(waiting_time_seconds / 60)
    waiting_time_seconds = str(random.uniform(250, 300))
    number_pages = str(data[-1])

    table = Table(title='Fl')
    table.add_column('#', justify='left', style='green')
    table.add_column('Message', justify='left', style='green')
    table.add_column('Waiting time', justify='left', style='green')
    table.add_column('Current time', justify='left', style='green')
    table.add_column('Launch time', justify='left', style='green')

    table.add_row(str(count), well_what, waiting_time_minutes, current_time, launch_time)

    console = Console()
    print()
    console.print(table)
    print()

    return waiting_time_seconds


def main(count, launch_time):

    """ Запуск бота """

    data = get_input_parameters()
    parser = Parser(data)
    data = parser.start_parsing()

    how_long_to_wait = display_information_on_terminal_and_wait(data, count, launch_time)

    count += 1

    return data, how_long_to_wait, count
